package com.hyd.manage.service;

import java.util.List;
import com.hyd.manage.domain.Medicines;

/**
 * 药品入库Service接口
 * 
 * @author hwb
 * @date 2025-02-20
 */
public interface IMedicinesService 
{
    /**
     * 查询药品入库
     * 
     * @param id 药品入库主键
     * @return 药品入库
     */
    public Medicines selectMedicinesById(Long id);

    /**
     * 查询药品入库列表
     * 
     * @param medicines 药品入库
     * @return 药品入库集合
     */
    public List<Medicines> selectMedicinesList(Medicines medicines);

    /**
     * 新增药品入库
     * 
     * @param medicines 药品入库
     * @return 结果
     */
    public int insertMedicines(Medicines medicines);

    /**
     * 修改药品入库
     * 
     * @param medicines 药品入库
     * @return 结果
     */
    public int updateMedicines(Medicines medicines);

    /**
     * 批量删除药品入库
     * 
     * @param ids 需要删除的药品入库主键集合
     * @return 结果
     */
    public int deleteMedicinesByIds(Long[] ids);

    /**
     * 删除药品入库信息
     * 
     * @param id 药品入库主键
     * @return 结果
     */
    public int deleteMedicinesById(Long id);

    /**
     * 根据药品编码查询药品信息
     * @param medicineCode
     * @return
     */
    public List<Medicines> selectMedicinesListByCode(String medicineCode);

    /**
     * 根据药品编码更新库存数量
     * @param medicineCode
     * @param quantity
     * @return
     */
    public int updateStockQuantity(String medicineCode, String batchNumber, Long quantity);

    /**
     * 根据药品编码更新库存数量(增加)
     * @param medicineCode
     * @param quantity
     * @return
     */
    public int updateStockQuantityAdd(String medicineCode, String batchNumber, Long quantity);

    /**
     * 根据药品编码查询库存信息
     * @param medicineCode
     * @return
     */
    public List<Medicines> selectInventoryByCode(String medicineCode);

    /**
     * 根据药品编码和批次号查询库存信息
     * @param medicineCode
     * @param batchNumber
     * @return
     */
    public Medicines selectMedicineByCodeAndNumber(String medicineCode, String batchNumber);
}
